/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteNode(ListNode* head, int val) {
        if(head==nullptr)
            return nullptr;
        ListNode* phead=new ListNode(-1);//创建哨兵结点
        phead->next=head;
        ListNode* cur=head;//记录当前结点
        ListNode* prev=phead;//记录上一个结点
        while(cur)
        {
            if(cur->val==val)
            {
                prev->next=cur->next;//删除结点
                cur->next=nullptr;
                break;
            }
            cur=cur->next;//往后遍历
            prev=prev->next;
        }
        return phead->next;

    }
};